package com.generic.rangewildcard.array;

import com.generic.rangewildcard.Apple;
import com.generic.rangewildcard.Fruit;
import com.generic.rangewildcard.Jonathan;
import com.generic.rangewildcard.Orange;

public class CovariantArrays {

	public static void main(String[] args) {
		// 数组的一种特殊行为：可以向导出类型的数组赋予基类型的数组引用
		Fruit[] fruit = new Apple[10];
		// 因为实际的数组类型是Apple[]，所以你可以放置Apple或Apple的子类型
		fruit[0] = new Apple();
		fruit[1] = new Jonathan();
		try {
			// 在编译阶段不会报错，因为它有一个Fruit[]引用，但运行时会报错，因为数组类型是Apple[]，不是Fruit[]，也不是Orange[]
			fruit[2] = new Fruit();
			fruit[3] = new Orange();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
